let MyPromise = require("./MyPromise");
let MyPromise2 = require("./MyPromise2");

// let a = new MyPromise((resolve, reject) =>{
//     console.log(1)
//     resolve('te')
//     throw new Error('errorrr')
// })
// .then((v) =>{
//     console.log(v)
//     return new MyPromise((resolve, reject) =>
//     {
//         resolve("new")
//     })
//     // .then((v) =>{
//         // console.log(v+"+VV")
//         // return undefined
//     // })

// }).catch((err)=>{
//     console.log(err)
//     return 1111;
// }).then((v) =>{
//     console.log('f',v)
// },(err) =>{
//     console.log('e',err)
// }).catch((err)=>{
//   console.log('err')
// })
// // console.log(2)
let a = {};
a.promise = new MyPromise((resolve, reject) => {
  a.resolve = resolve;
  a.reject = reject;
});
// var dummy = { dummy: "dummy" }; // we fulfill or reject with this when we don't intend to test against it
// a.resolve(12)
// a.promise.then(()=>{},()=>{}).then((v)=>{
//   console.log(v)
//   console.log("123")

// },(err)=>{
//   console.log(err)
// })
// a.resolve(dummy);
// a.promise.then((res) =>{
//   console.log(res); 
// },(err) =>{
//   console.log(err,"1");
//   return "aa"
// })
// a.promise.then((res) =>{
//   console.log(res); 
// },(err) =>{
//   console.log(err,"2");

//   throw Error("asdf")

// })
// a.promise.then((res) =>{
//   console.log(res); 
// },(err) =>{
//   console.log(err,"3");
//   return "aa"
// })
a.resolve(123)
a.promise
  .then((v) => {
    console.log("1");
    return 1231;
  },(err) =>{
    console.log(err)
  })
  .then((v) => {
    console.log("1-1");
  });
a.promise
  .then((v) => {
    console.log("2");
    a.promise
      .then((v) => {
        console.log("3");
        a.promise.then((v) => {
          console.log("4");
        })
        return 123;
        
      })
      .then((v) => {
        console.log("3-1");
      });
    return new MyPromise((resolve, reject) => {
      resolve("111aa");
    })
  },(err) =>{
    console.log(err)
  })
  .then((v) => {
    console.log("2-1",v); 
  },(err) =>{
    console.log(err)
  });
// let b = (v)=>{}
// console.log(b.constructor.name)